<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/nodemask.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/nodemask.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9OT0RFTUFTS19IXzA_"><span class="b">__LINUX_NODEMASK_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9OT0RFTUFTS19IXzA_"><span class="b">__LINUX_NODEMASK_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="k">/*</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="k"> * Nodemasks provide a bitmap suitable for representing the</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="k"> * set of Node&apos;s in a system, one bit position per Node number.</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="k"> *</span>
<a name="8" /><span class="Maybe">       8:</span> <span class="k"> * See detailed comments in the file linux/bitmap.h describing the</span>
<a name="9" /><span class="Maybe">       9:</span> <span class="k"> * data type on which these nodemasks are based.</span>
<a name="10" /><span class="Maybe">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="Maybe">      11:</span> <span class="k"> * For details of nodemask_scnprintf() and nodemask_parse_user(),</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="k"> * see bitmap_scnprintf() and bitmap_parse_user() in lib/bitmap.c.</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="k"> * For details of nodelist_scnprintf() and nodelist_parse(), see</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="k"> * bitmap_scnlistprintf() and bitmap_parselist(), also in bitmap.c.</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="k"> * For details of node_remap(), see bitmap_bitremap in lib/bitmap.c.</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="k"> * For details of nodes_remap(), see bitmap_remap in lib/bitmap.c.</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="k"> * For details of nodes_onto(), see bitmap_onto in lib/bitmap.c.</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="k"> * For details of nodes_fold(), see bitmap_fold in lib/bitmap.c.</span>
<a name="19" /><span class="Maybe">      19:</span> <span class="k"> *</span>
<a name="20" /><span class="Maybe">      20:</span> <span class="k"> * The available nodemask operations are:</span>
<a name="21" /><span class="Maybe">      21:</span> <span class="k"> *</span>
<a name="22" /><span class="Maybe">      22:</span> <span class="k"> * void node_set(node, mask)        turn on bit &apos;node&apos; in mask</span>
<a name="23" /><span class="Maybe">      23:</span> <span class="k"> * void node_clear(node, mask)        turn off bit &apos;node&apos; in mask</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="k"> * void nodes_setall(mask)        set all bits</span>
<a name="25" /><span class="Maybe">      25:</span> <span class="k"> * void nodes_clear(mask)        clear all bits</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="k"> * int node_isset(node, mask)        true iff bit &apos;node&apos; set in mask</span>
<a name="27" /><span class="Maybe">      27:</span> <span class="k"> * int node_test_and_set(node, mask)    test and set bit &apos;node&apos; in mask</span>
<a name="28" /><span class="Maybe">      28:</span> <span class="k"> *</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="k"> * void nodes_and(dst, src1, src2)    dst = src1 &amp; src2  [intersection]</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="k"> * void nodes_or(dst, src1, src2)    dst = src1 | src2  [union]</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="k"> * void nodes_xor(dst, src1, src2)    dst = src1 ^ src2</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="k"> * void nodes_andnot(dst, src1, src2)    dst = src1 &amp; ~src2</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="k"> * void nodes_complement(dst, src)    dst = ~src</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="k"> *</span>
<a name="35" /><span class="Maybe">      35:</span> <span class="k"> * int nodes_equal(mask1, mask2)    Does mask1 == mask2?</span>
<a name="36" /><span class="Maybe">      36:</span> <span class="k"> * int nodes_intersects(mask1, mask2)    Do mask1 and mask2 intersect?</span>
<a name="37" /><span class="Maybe">      37:</span> <span class="k"> * int nodes_subset(mask1, mask2)    Is mask1 a subset of mask2?</span>
<a name="38" /><span class="Maybe">      38:</span> <span class="k"> * int nodes_empty(mask)        Is mask empty (no bits sets)?</span>
<a name="39" /><span class="Maybe">      39:</span> <span class="k"> * int nodes_full(mask)            Is mask full (all bits sets)?</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="k"> * int nodes_weight(mask)        Hamming weight - number of set bits</span>
<a name="41" /><span class="Maybe">      41:</span> <span class="k"> *</span>
<a name="42" /><span class="Maybe">      42:</span> <span class="k"> * void nodes_shift_right(dst, src, n)    Shift right</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="k"> * void nodes_shift_left(dst, src, n)    Shift left</span>
<a name="44" /><span class="Maybe">      44:</span> <span class="k"> *</span>
<a name="45" /><span class="Maybe">      45:</span> <span class="k"> * int first_node(mask)            Number lowest set bit, or MAX_NUMNODES</span>
<a name="46" /><span class="Maybe">      46:</span> <span class="k"> * int next_node(node, mask)        Next node past &apos;node&apos;, or MAX_NUMNODES</span>
<a name="47" /><span class="Maybe">      47:</span> <span class="k"> * int first_unset_node(mask)        First node not set in mask, or </span>
<a name="48" /><span class="Maybe">      48:</span> <span class="k"> *                    MAX_NUMNODES.</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="k"> *</span>
<a name="50" /><span class="Maybe">      50:</span> <span class="k"> * nodemask_t nodemask_of_node(node)    Return nodemask with bit &apos;node&apos; set</span>
<a name="51" /><span class="Maybe">      51:</span> <span class="k"> * NODE_MASK_ALL            Initializer - all bits set</span>
<a name="52" /><span class="Maybe">      52:</span> <span class="k"> * NODE_MASK_NONE            Initializer - no bits set</span>
<a name="53" /><span class="Maybe">      53:</span> <span class="k"> * unsigned long *nodes_addr(mask)    Array of unsigned long&apos;s in mask</span>
<a name="54" /><span class="Maybe">      54:</span> <span class="k"> *</span>
<a name="55" /><span class="Maybe">      55:</span> <span class="k"> * int nodemask_scnprintf(buf, len, mask) Format nodemask for printing</span>
<a name="56" /><span class="Maybe">      56:</span> <span class="k"> * int nodemask_parse_user(ubuf, ulen, mask)    Parse ascii string as nodemask</span>
<a name="57" /><span class="Maybe">      57:</span> <span class="k"> * int nodelist_scnprintf(buf, len, mask) Format nodemask as list for printing</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * int nodelist_parse(buf, map)        Parse ascii string as nodelist</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * int node_remap(oldbit, old, new)    newbit = map(old, new)(oldbit)</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * void nodes_remap(dst, src, old, new)    *dst = map(old, new)(src)</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> * void nodes_onto(dst, orig, relmap)    *dst = orig relative to relmap</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="k"> * void nodes_fold(dst, orig, sz)    dst bits = orig bits mod sz</span>
<a name="63" /><span class="Maybe">      63:</span> <span class="k"> *</span>
<a name="64" /><span class="Maybe">      64:</span> <span class="k"> * for_each_node_mask(node, mask)    for-loop node over mask</span>
<a name="65" /><span class="Maybe">      65:</span> <span class="k"> *</span>
<a name="66" /><span class="Maybe">      66:</span> <span class="k"> * int num_online_nodes()        Number of online Nodes</span>
<a name="67" /><span class="Maybe">      67:</span> <span class="k"> * int num_possible_nodes()        Number of all possible Nodes</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="k"> *</span>
<a name="69" /><span class="Maybe">      69:</span> <span class="k"> * int node_random(mask)        Random node with set bit in mask</span>
<a name="70" /><span class="Maybe">      70:</span> <span class="k"> *</span>
<a name="71" /><span class="Maybe">      71:</span> <span class="k"> * int node_online(node)        Is some node online?</span>
<a name="72" /><span class="Maybe">      72:</span> <span class="k"> * int node_possible(node)        Is some node possible?</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="k"> *</span>
<a name="74" /><span class="Maybe">      74:</span> <span class="k"> * node_set_online(node)        set bit &apos;node&apos; in node_online_map</span>
<a name="75" /><span class="Maybe">      75:</span> <span class="k"> * node_set_offline(node)        clear bit &apos;node&apos; in node_online_map</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="k"> *</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="k"> * for_each_node(node)            for-loop node over node_possible_map</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="k"> * for_each_online_node(node)        for-loop node over node_online_map</span>
<a name="79" /><span class="Maybe">      79:</span> <span class="k"> *</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="k"> * Subtlety:</span>
<a name="81" /><span class="Maybe">      81:</span> <span class="k"> * 1) The &apos;type-checked&apos; form of node_isset() causes gcc (3.3.2, anyway)</span>
<a name="82" /><span class="Maybe">      82:</span> <span class="k"> *    to generate slightly worse code.  So use a simple one-line #define</span>
<a name="83" /><span class="Maybe">      83:</span> <span class="k"> *    for node_isset(), instead of wrapping an inline inside a macro, the</span>
<a name="84" /><span class="Maybe">      84:</span> <span class="k"> *    way we do the other calls.</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="k"> *</span>
<a name="86" /><span class="Maybe">      86:</span> <span class="k"> * NODEMASK_SCRATCH</span>
<a name="87" /><span class="Maybe">      87:</span> <span class="k"> * When doing above logical AND, OR, XOR, Remap operations the callers tend to</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="k"> * need temporary nodemask_t&apos;s on the stack. But if NODES_SHIFT is large,</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="k"> * nodemask_t&apos;s consume too much stack space.  NODEMASK_SCRATCH is a helper</span>
<a name="90" /><span class="Maybe">      90:</span> <span class="k"> * for such situations. See below and CPUMASK_ALLOC also.</span>
<a name="91" /><span class="Maybe">      91:</span> <span class="k"> */</span>
<a name="92" /><span class="Maybe">      92:</span> 
<a name="93" /><span class="Maybe">      93:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">kernel</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="94" /><span class="Maybe">      94:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">threads</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">bitmap</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="96" /><span class="Maybe">      96:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">numa</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="97" /><span class="Maybe">      97:</span> 
<a name="98" /><span class="Maybe">      98:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span> <a href="cpu.c_macros_ref.html#_REVDTEFSRV9CSVRNQVBfMA__"><span class="b">DECLARE_BITMAP</span></a><span class="f">(</span><span class="b">bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="b">nodemask_t</span><span class="f">;</span>
<a name="99" /><span class="Maybe">      99:</span> <span class="m">extern</span> <span class="b">nodemask_t</span> <span class="b">_unused_nodemask_arg_</span><span class="f">;</span>
<a name="100" /><span class="Maybe">     100:</span> 
<a name="101" /><span class="Maybe">     101:</span> <span class="k">/*</span>
<a name="102" /><span class="Maybe">     102:</span> <span class="k"> * The inline keyword gives the compiler room to decide to inline, or</span>
<a name="103" /><span class="Maybe">     103:</span> <span class="k"> * not inline a function as it sees best.  However, as these functions</span>
<a name="104" /><span class="Maybe">     104:</span> <span class="k"> * are called in both __init and non-__init functions, if they are not</span>
<a name="105" /><span class="Maybe">     105:</span> <span class="k"> * inlined we will end up with a section mis-match error (of the type of</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="k"> * freeable items not being freed).  So we must use __always_inline here</span>
<a name="107" /><span class="Maybe">     107:</span> <span class="k"> * to fix the problem.  If other functions in the future also end up in</span>
<a name="108" /><span class="Maybe">     108:</span> <span class="k"> * this situation they will also need to be annotated as __always_inline</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="k"> */</span>
<a name="110" /><span class="Maybe">     110:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm9kZV9zZXRfMA__"><span class="b">node_set</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> <span class="b">__node_set</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">)</span>
<a name="111" /><span class="Maybe">     111:</span> <span class="m">static</span> <a href="cpu.c_macros_ref.html#_X19hbHdheXNfaW5saW5lXzA_"><span class="b">__always_inline</span></a> <span class="m">void</span> <span class="b">__node_set</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">volatile</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="112" /><span class="Maybe">     112:</span> <span class="f">{</span>
<a name="113" /><span class="Maybe">     113:</span>     <span class="b">set_bit</span><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="114" /><span class="Maybe">     114:</span> <span class="f">}</span>
<a name="115" /><span class="Maybe">     115:</span> 
<a name="116" /><span class="Maybe">     116:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV9jbGVhcl8w"><span class="b">node_clear</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> <span class="b">__node_clear</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">)</span>
<a name="117" /><span class="Maybe">     117:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__node_clear</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">volatile</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">)</span>
<a name="118" /><span class="Maybe">     118:</span> <span class="f">{</span>
<a name="119" /><span class="Maybe">     119:</span>     <span class="b">clear_bit</span><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="120" /><span class="Maybe">     120:</span> <span class="f">}</span>
<a name="121" /><span class="Maybe">     121:</span> 
<a name="122" /><span class="Maybe">     122:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfc2V0YWxsXzA_"><span class="b">nodes_setall</span></a><span class="f">(</span><span class="b">dst</span><span class="f">)</span> <span class="b">__nodes_setall</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="123" /><span class="Maybe">     123:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_setall</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="124" /><span class="Maybe">     124:</span> <span class="f">{</span>
<a name="125" /><span class="Maybe">     125:</span>     <span class="b">bitmap_fill</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="126" /><span class="Maybe">     126:</span> <span class="f">}</span>
<a name="127" /><span class="Maybe">     127:</span> 
<a name="128" /><span class="Maybe">     128:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm9kZXNfY2xlYXJfMA__"><span class="b">nodes_clear</span></a><span class="f">(</span><span class="b">dst</span><span class="f">)</span> <span class="b">__nodes_clear</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_clear</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="130" /><span class="Maybe">     130:</span> <span class="f">{</span>
<a name="131" /><span class="Maybe">     131:</span>     <span class="b">bitmap_zero</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="132" /><span class="Maybe">     132:</span> <span class="f">}</span>
<a name="133" /><span class="Maybe">     133:</span> 
<a name="134" /><span class="Maybe">     134:</span> <span class="k">/* No static inline type checking - see Subtlety (1) above. */</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm9kZV9pc3NldF8w"><span class="b">node_isset</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">nodemask</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_dGVzdF9iaXRfMA__"><span class="b">test_bit</span></a><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">nodemask</span><span class="f">)</span><span class="f">.</span><span class="b">bits</span><span class="f">)</span>
<a name="136" /><span class="Maybe">     136:</span> 
<a name="137" /><span class="Maybe">     137:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV90ZXN0X2FuZF9zZXRfMA__"><span class="b">node_test_and_set</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">nodemask</span><span class="f">)</span> \
<a name="138" /><span class="Maybe">     138:</span>             <span class="b">__node_test_and_set</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">nodemask</span><span class="f">)</span><span class="f">)</span>
<a name="139" /><span class="Maybe">     139:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__node_test_and_set</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">addr</span><span class="f">)</span>
<a name="140" /><span class="Maybe">     140:</span> <span class="f">{</span>
<a name="141" /><span class="Maybe">     141:</span>     <span class="m">return</span> <span class="b">test_and_set_bit</span><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">addr</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">)</span><span class="f">;</span>
<a name="142" /><span class="Maybe">     142:</span> <span class="f">}</span>
<a name="143" /><span class="Maybe">     143:</span> 
<a name="144" /><span class="Maybe">     144:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfYW5kXzA_"><span class="b">nodes_and</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="145" /><span class="Maybe">     145:</span>             <span class="b">__nodes_and</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_and</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="147" /><span class="Maybe">     147:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="148" /><span class="Maybe">     148:</span> <span class="f">{</span>
<a name="149" /><span class="Maybe">     149:</span>     <span class="b">bitmap_and</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="150" /><span class="Maybe">     150:</span> <span class="f">}</span>
<a name="151" /><span class="Maybe">     151:</span> 
<a name="152" /><span class="Maybe">     152:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfb3JfMA__"><span class="b">nodes_or</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="153" /><span class="Maybe">     153:</span>             <span class="b">__nodes_or</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_or</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="155" /><span class="Maybe">     155:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="156" /><span class="Maybe">     156:</span> <span class="f">{</span>
<a name="157" /><span class="Maybe">     157:</span>     <span class="b">bitmap_or</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="f">}</span>
<a name="159" /><span class="Maybe">     159:</span> 
<a name="160" /><span class="Maybe">     160:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfeG9yXzA_"><span class="b">nodes_xor</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="161" /><span class="Maybe">     161:</span>             <span class="b">__nodes_xor</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_xor</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="163" /><span class="Maybe">     163:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="164" /><span class="Maybe">     164:</span> <span class="f">{</span>
<a name="165" /><span class="Maybe">     165:</span>     <span class="b">bitmap_xor</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="166" /><span class="Maybe">     166:</span> <span class="f">}</span>
<a name="167" /><span class="Maybe">     167:</span> 
<a name="168" /><span class="Maybe">     168:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfYW5kbm90XzA_"><span class="b">nodes_andnot</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="169" /><span class="Maybe">     169:</span>             <span class="b">__nodes_andnot</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_andnot</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="171" /><span class="Maybe">     171:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="f">{</span>
<a name="173" /><span class="Maybe">     173:</span>     <span class="b">bitmap_andnot</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="f">}</span>
<a name="175" /><span class="Maybe">     175:</span> 
<a name="176" /><span class="Maybe">     176:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfY29tcGxlbWVudF8w"><span class="b">nodes_complement</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span> \
<a name="177" /><span class="Maybe">     177:</span>             <span class="b">__nodes_complement</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_complement</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="179" /><span class="Maybe">     179:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="180" /><span class="Maybe">     180:</span> <span class="f">{</span>
<a name="181" /><span class="Maybe">     181:</span>     <span class="b">bitmap_complement</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="182" /><span class="Maybe">     182:</span> <span class="f">}</span>
<a name="183" /><span class="Maybe">     183:</span> 
<a name="184" /><span class="Maybe">     184:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfZXF1YWxfMA__"><span class="b">nodes_equal</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="185" /><span class="Maybe">     185:</span>             <span class="b">__nodes_equal</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="186" /><span class="Maybe">     186:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_equal</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="187" /><span class="Maybe">     187:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="f">{</span>
<a name="189" /><span class="Maybe">     189:</span>     <span class="m">return</span> <span class="b">bitmap_equal</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="190" /><span class="Maybe">     190:</span> <span class="f">}</span>
<a name="191" /><span class="Maybe">     191:</span> 
<a name="192" /><span class="Maybe">     192:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfaW50ZXJzZWN0c18w"><span class="b">nodes_intersects</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="193" /><span class="Maybe">     193:</span>             <span class="b">__nodes_intersects</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_intersects</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="195" /><span class="Maybe">     195:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="196" /><span class="Maybe">     196:</span> <span class="f">{</span>
<a name="197" /><span class="Maybe">     197:</span>     <span class="m">return</span> <span class="b">bitmap_intersects</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="198" /><span class="Maybe">     198:</span> <span class="f">}</span>
<a name="199" /><span class="Maybe">     199:</span> 
<a name="200" /><span class="Maybe">     200:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfc3Vic2V0XzA_"><span class="b">nodes_subset</span></a><span class="f">(</span><span class="b">src1</span><span class="f">,</span> <span class="b">src2</span><span class="f">)</span> \
<a name="201" /><span class="Maybe">     201:</span>             <span class="b">__nodes_subset</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src1</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src2</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="202" /><span class="Maybe">     202:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_subset</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src1p</span><span class="f">,</span>
<a name="203" /><span class="Maybe">     203:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">src2p</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="204" /><span class="Maybe">     204:</span> <span class="f">{</span>
<a name="205" /><span class="Maybe">     205:</span>     <span class="m">return</span> <span class="b">bitmap_subset</span><span class="f">(</span><span class="b">src1p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">src2p</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="206" /><span class="Maybe">     206:</span> <span class="f">}</span>
<a name="207" /><span class="Maybe">     207:</span> 
<a name="208" /><span class="Maybe">     208:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfZW1wdHlfMA__"><span class="b">nodes_empty</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span> <span class="b">__nodes_empty</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="209" /><span class="Maybe">     209:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_empty</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="210" /><span class="Maybe">     210:</span> <span class="f">{</span>
<a name="211" /><span class="Maybe">     211:</span>     <span class="m">return</span> <span class="b">bitmap_empty</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span> <span class="f">}</span>
<a name="213" /><span class="Maybe">     213:</span> 
<a name="214" /><span class="Maybe">     214:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfZnVsbF8w"><span class="b">nodes_full</span></a><span class="f">(</span><span class="b">nodemask</span><span class="f">)</span> <span class="b">__nodes_full</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">nodemask</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="215" /><span class="Maybe">     215:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_full</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="f">{</span>
<a name="217" /><span class="Maybe">     217:</span>     <span class="m">return</span> <span class="b">bitmap_full</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="f">}</span>
<a name="219" /><span class="Maybe">     219:</span> 
<a name="220" /><span class="Maybe">     220:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm9kZXNfd2VpZ2h0XzA_"><span class="b">nodes_weight</span></a><span class="f">(</span><span class="b">nodemask</span><span class="f">)</span> <span class="b">__nodes_weight</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">nodemask</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="221" /><span class="Maybe">     221:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodes_weight</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="f">{</span>
<a name="223" /><span class="Maybe">     223:</span>     <span class="m">return</span> <span class="b">bitmap_weight</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="224" /><span class="Maybe">     224:</span> <span class="f">}</span>
<a name="225" /><span class="Maybe">     225:</span> 
<a name="226" /><span class="Maybe">     226:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfc2hpZnRfcmlnaHRfMA__"><span class="b">nodes_shift_right</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">n</span><span class="f">)</span> \
<a name="227" /><span class="Maybe">     227:</span>             <span class="b">__nodes_shift_right</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="228" /><span class="Maybe">     228:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_shift_right</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="229" /><span class="Maybe">     229:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="230" /><span class="Maybe">     230:</span> <span class="f">{</span>
<a name="231" /><span class="Maybe">     231:</span>     <span class="b">bitmap_shift_right</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="232" /><span class="Maybe">     232:</span> <span class="f">}</span>
<a name="233" /><span class="Maybe">     233:</span> 
<a name="234" /><span class="Maybe">     234:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfc2hpZnRfbGVmdF8w"><span class="b">nodes_shift_left</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">n</span><span class="f">)</span> \
<a name="235" /><span class="Maybe">     235:</span>             <span class="b">__nodes_shift_left</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="236" /><span class="Maybe">     236:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_shift_left</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span>
<a name="237" /><span class="Maybe">     237:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="f">{</span>
<a name="239" /><span class="Maybe">     239:</span>     <span class="b">bitmap_shift_left</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">n</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="240" /><span class="Maybe">     240:</span> <span class="f">}</span>
<a name="241" /><span class="Maybe">     241:</span> 
<a name="242" /><span class="Maybe">     242:</span> <span class="k">/* FIXME: better would be to fix all architectures to never return</span>
<a name="243" /><span class="Maybe">     243:</span> <span class="k">          &gt; MAX_NUMNODES, then the silly min_ts could be dropped. */</span>
<a name="244" /><span class="Maybe">     244:</span> 
<a name="245" /><span class="Maybe">     245:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zmlyc3Rfbm9kZV8w"><span class="b">first_node</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span> <span class="b">__first_node</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">)</span>
<a name="246" /><span class="Maybe">     246:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__first_node</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="247" /><span class="Maybe">     247:</span> <span class="f">{</span>
<a name="248" /><span class="Maybe">     248:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_bWluX3RfMA__"><span class="b">min_t</span></a><span class="f">(</span><span class="m">int</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">,</span> <span class="b">find_first_bit</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="249" /><span class="Maybe">     249:</span> <span class="f">}</span>
<a name="250" /><span class="Maybe">     250:</span> 
<a name="251" /><span class="Maybe">     251:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bmV4dF9ub2RlXzA_"><span class="b">next_node</span></a><span class="f">(</span><span class="b">n</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span> <span class="b">__next_node</span><span class="f">(</span><span class="f">(</span><span class="b">n</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">)</span>
<a name="252" /><span class="Maybe">     252:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__next_node</span><span class="f">(</span><span class="m">int</span> <span class="b">n</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">)</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="f">{</span>
<a name="254" /><span class="Maybe">     254:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_bWluX3RfMA__"><span class="b">min_t</span></a><span class="f">(</span><span class="m">int</span><span class="f">,</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">,</span><span class="b">find_next_bit</span><span class="f">(</span><span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">,</span> <span class="b">n</span><span class="f">+</span><span class="c">1</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="255" /><span class="Maybe">     255:</span> <span class="f">}</span>
<a name="256" /><span class="Maybe">     256:</span> 
<a name="257" /><span class="Maybe">     257:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">init_nodemask_of_node</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">,</span> <span class="m">int</span> <span class="b">node</span><span class="f">)</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="f">{</span>
<a name="259" /><span class="Maybe">     259:</span>     <a href="cpu.c_macros_ref.html#_bm9kZXNfY2xlYXJfMA__"><span class="b">nodes_clear</span></a><span class="f">(</span><span class="f">*</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="260" /><span class="Maybe">     260:</span>     <a href="cpu.c_macros_ref.html#_bm9kZV9zZXRfMA__"><span class="b">node_set</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="f">*</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="f">}</span>
<a name="262" /><span class="Maybe">     262:</span> 
<a name="263" /><span class="Maybe">     263:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZW1hc2tfb2Zfbm9kZV8w"><span class="b">nodemask_of_node</span></a><span class="f">(</span><span class="b">node</span><span class="f">)</span>                        \
<a name="264" /><span class="Maybe">     264:</span> <span class="f">(</span><span class="f">{</span>                                    \
<a name="265" /><span class="Maybe">     265:</span>     <span class="b">typeof</span><span class="f">(</span><span class="b">_unused_nodemask_arg_</span><span class="f">)</span> <span class="b">m</span><span class="f">;</span>                \
<a name="266" /><span class="Maybe">     266:</span>     <span class="m">if</span> <span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">m</span><span class="f">)</span> <span class="f">==</span> <span class="m">sizeof</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="f">)</span> <span class="f">{</span>            \
<a name="267" /><span class="Maybe">     267:</span>         <span class="b">m</span><span class="f">.</span><span class="b">bits</span><span class="f">[</span><span class="c">0</span><span class="f">]</span> <span class="f">=</span> <span class="c">1UL</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">;</span>                \
<a name="268" /><span class="Maybe">     268:</span>     <span class="f">}</span> <span class="m">else</span> <span class="f">{</span>                            \
<a name="269" /><span class="Maybe">     269:</span>         <span class="b">init_nodemask_of_node</span><span class="f">(</span><span class="f">&amp;</span><span class="b">m</span><span class="f">,</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>            \
<a name="270" /><span class="Maybe">     270:</span>     <span class="f">}</span>                                \
<a name="271" /><span class="Maybe">     271:</span>     <span class="b">m</span><span class="f">;</span>                                \
<a name="272" /><span class="Maybe">     272:</span> <span class="f">}</span><span class="f">)</span>
<a name="273" /><span class="Maybe">     273:</span> 
<a name="274" /><span class="Maybe">     274:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zmlyc3RfdW5zZXRfbm9kZV8w"><span class="b">first_unset_node</span></a><span class="f">(</span><span class="b">mask</span><span class="f">)</span> <span class="b">__first_unset_node</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span>
<a name="275" /><span class="Maybe">     275:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__first_unset_node</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">maskp</span><span class="f">)</span>
<a name="276" /><span class="Maybe">     276:</span> <span class="f">{</span>
<a name="277" /><span class="Maybe">     277:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_bWluX3RfMA__"><span class="b">min_t</span></a><span class="f">(</span><span class="m">int</span><span class="f">,</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">,</span>
<a name="278" /><span class="Maybe">     278:</span>             <span class="b">find_first_zero_bit</span><span class="f">(</span><span class="b">maskp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="279" /><span class="Maybe">     279:</span> <span class="f">}</span>
<a name="280" /><span class="Maybe">     280:</span> 
<a name="281" /><span class="Maybe">     281:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX0xBU1RfV09SRF8w"><span class="b">NODE_MASK_LAST_WORD</span></a> <a href="cpu.c_macros_ref.html#_QklUTUFQX0xBU1RfV09SRF9NQVNLXzA_"><span class="b">BITMAP_LAST_WORD_MASK</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="282" /><span class="Maybe">     282:</span> 
<a name="283" /><span class="Maybe">     283:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a> <span class="f">&lt;=</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a>
<a name="284" /><span class="Maybe">     284:</span> 
<a name="285" /><span class="Maybe">     285:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX0FMTF8w"><span class="b">NODE_MASK_ALL</span></a>                            \
<a name="286" /><span class="Maybe">     286:</span> <span class="f">(</span><span class="f">(</span><span class="b">nodemask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                            \
<a name="287" /><span class="Maybe">     287:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX0xBU1RfV09SRF8w"><span class="b">NODE_MASK_LAST_WORD</span></a>        \
<a name="288" /><span class="Maybe">     288:</span> <span class="f">}</span> <span class="f">}</span><span class="f">)</span>
<a name="289" /><span class="Maybe">     289:</span> 
<a name="290" /><span class="False">     290:</span> <span class="f">#</span><span class="n">else</span>
<a name="291" /><span class="False">     291:</span> 
<a name="292" /><span class="False">     292:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX0FMTF8w"><span class="b">NODE_MASK_ALL</span></a>                            \
<a name="293" /><span class="False">     293:</span> <span class="f">(</span><span class="f">(</span><span class="b">nodemask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                            \
<a name="294" /><span class="False">     294:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">-</span><span class="c">2</span><span class="f">]</span> <span class="f">=</span> <span class="f">~</span><span class="c">0UL</span><span class="f">,</span>            \
<a name="295" /><span class="False">     295:</span>     <span class="f">[</span><a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX0xBU1RfV09SRF8w"><span class="b">NODE_MASK_LAST_WORD</span></a>        \
<a name="296" /><span class="False">     296:</span> <span class="f">}</span> <span class="f">}</span><span class="f">)</span>
<a name="297" /><span class="False">     297:</span> 
<a name="298" /><span class="Maybe">     298:</span> <span class="f">#</span><span class="n">endif</span>
<a name="299" /><span class="Maybe">     299:</span> 
<a name="300" /><span class="Maybe">     300:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERV9NQVNLX05PTkVfMA__"><span class="b">NODE_MASK_NONE</span></a>                            \
<a name="301" /><span class="Maybe">     301:</span> <span class="f">(</span><span class="f">(</span><span class="b">nodemask_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">{</span>                            \
<a name="302" /><span class="Maybe">     302:</span>     <span class="f">[</span><span class="c">0</span> <span class="f">...</span> <a href="cpu.c_macros_ref.html#_QklUU19UT19MT05HU18w"><span class="b">BITS_TO_LONGS</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span><span class="f">-</span><span class="c">1</span><span class="f">]</span> <span class="f">=</span>  <span class="c">0UL</span>            \
<a name="303" /><span class="Maybe">     303:</span> <span class="f">}</span> <span class="f">}</span><span class="f">)</span>
<a name="304" /><span class="Maybe">     304:</span> 
<a name="305" /><span class="Maybe">     305:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfYWRkcl8w"><span class="b">nodes_addr</span></a><span class="f">(</span><span class="b">src</span><span class="f">)</span> <span class="f">(</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">.</span><span class="b">bits</span><span class="f">)</span>
<a name="306" /><span class="Maybe">     306:</span> 
<a name="307" /><span class="Maybe">     307:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZW1hc2tfc2NucHJpbnRmXzA_"><span class="b">nodemask_scnprintf</span></a><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span> \
<a name="308" /><span class="Maybe">     308:</span>             <span class="b">__nodemask_scnprintf</span><span class="f">(</span><span class="f">(</span><span class="b">buf</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">len</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="309" /><span class="Maybe">     309:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodemask_scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="310" /><span class="Maybe">     310:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="311" /><span class="Maybe">     311:</span> <span class="f">{</span>
<a name="312" /><span class="Maybe">     312:</span>     <span class="m">return</span> <span class="b">bitmap_scnprintf</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="313" /><span class="Maybe">     313:</span> <span class="f">}</span>
<a name="314" /><span class="Maybe">     314:</span> 
<a name="315" /><span class="Maybe">     315:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZW1hc2tfcGFyc2VfdXNlcl8w"><span class="b">nodemask_parse_user</span></a><span class="f">(</span><span class="b">ubuf</span><span class="f">,</span> <span class="b">ulen</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> \
<a name="316" /><span class="Maybe">     316:</span>         <span class="b">__nodemask_parse_user</span><span class="f">(</span><span class="f">(</span><span class="b">ubuf</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">ulen</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="317" /><span class="Maybe">     317:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodemask_parse_user</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="318" /><span class="Maybe">     318:</span>                     <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="319" /><span class="Maybe">     319:</span> <span class="f">{</span>
<a name="320" /><span class="Maybe">     320:</span>     <span class="m">return</span> <span class="b">bitmap_parse_user</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="321" /><span class="Maybe">     321:</span> <span class="f">}</span>
<a name="322" /><span class="Maybe">     322:</span> 
<a name="323" /><span class="Maybe">     323:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZWxpc3Rfc2NucHJpbnRmXzA_"><span class="b">nodelist_scnprintf</span></a><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <span class="b">src</span><span class="f">)</span> \
<a name="324" /><span class="Maybe">     324:</span>             <span class="b">__nodelist_scnprintf</span><span class="f">(</span><span class="f">(</span><span class="b">buf</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">len</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="325" /><span class="Maybe">     325:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodelist_scnprintf</span><span class="f">(</span><span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="m">int</span> <span class="b">len</span><span class="f">,</span>
<a name="326" /><span class="Maybe">     326:</span>                     <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="327" /><span class="Maybe">     327:</span> <span class="f">{</span>
<a name="328" /><span class="Maybe">     328:</span>     <span class="m">return</span> <span class="b">bitmap_scnlistprintf</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">len</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="329" /><span class="Maybe">     329:</span> <span class="f">}</span>
<a name="330" /><span class="Maybe">     330:</span> 
<a name="331" /><span class="Maybe">     331:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZWxpc3RfcGFyc2VfMA__"><span class="b">nodelist_parse</span></a><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">dst</span><span class="f">)</span> <span class="b">__nodelist_parse</span><span class="f">(</span><span class="f">(</span><span class="b">buf</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="332" /><span class="Maybe">     332:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__nodelist_parse</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">buf</span><span class="f">,</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="333" /><span class="Maybe">     333:</span> <span class="f">{</span>
<a name="334" /><span class="Maybe">     334:</span>     <span class="m">return</span> <span class="b">bitmap_parselist</span><span class="f">(</span><span class="b">buf</span><span class="f">,</span> <span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="335" /><span class="Maybe">     335:</span> <span class="f">}</span>
<a name="336" /><span class="Maybe">     336:</span> 
<a name="337" /><span class="Maybe">     337:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV9yZW1hcF8w"><span class="b">node_remap</span></a><span class="f">(</span><span class="b">oldbit</span><span class="f">,</span> <span class="b">old</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="338" /><span class="Maybe">     338:</span>         <span class="b">__node_remap</span><span class="f">(</span><span class="f">(</span><span class="b">oldbit</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">old</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="339" /><span class="Maybe">     339:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">__node_remap</span><span class="f">(</span><span class="m">int</span> <span class="b">oldbit</span><span class="f">,</span>
<a name="340" /><span class="Maybe">     340:</span>         <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">oldp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">newp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="341" /><span class="Maybe">     341:</span> <span class="f">{</span>
<a name="342" /><span class="Maybe">     342:</span>     <span class="m">return</span> <span class="b">bitmap_bitremap</span><span class="f">(</span><span class="b">oldbit</span><span class="f">,</span> <span class="b">oldp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">newp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="343" /><span class="Maybe">     343:</span> <span class="f">}</span>
<a name="344" /><span class="Maybe">     344:</span> 
<a name="345" /><span class="Maybe">     345:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfcmVtYXBfMA__"><span class="b">nodes_remap</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">src</span><span class="f">,</span> <span class="b">old</span><span class="f">,</span> <span class="m">new</span><span class="f">)</span> \
<a name="346" /><span class="Maybe">     346:</span>         <span class="b">__nodes_remap</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">src</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">old</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="m">new</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="347" /><span class="Maybe">     347:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_remap</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">srcp</span><span class="f">,</span>
<a name="348" /><span class="Maybe">     348:</span>         <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">oldp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">newp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="349" /><span class="Maybe">     349:</span> <span class="f">{</span>
<a name="350" /><span class="Maybe">     350:</span>     <span class="b">bitmap_remap</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">srcp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">oldp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">newp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="351" /><span class="Maybe">     351:</span> <span class="f">}</span>
<a name="352" /><span class="Maybe">     352:</span> 
<a name="353" /><span class="Maybe">     353:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfb250b18w"><span class="b">nodes_onto</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">orig</span><span class="f">,</span> <span class="b">relmap</span><span class="f">)</span> \
<a name="354" /><span class="Maybe">     354:</span>         <span class="b">__nodes_onto</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">orig</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">relmap</span><span class="f">)</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="355" /><span class="Maybe">     355:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_onto</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">origp</span><span class="f">,</span>
<a name="356" /><span class="Maybe">     356:</span>         <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">relmapp</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="357" /><span class="Maybe">     357:</span> <span class="f">{</span>
<a name="358" /><span class="Maybe">     358:</span>     <span class="b">bitmap_onto</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">origp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">relmapp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="359" /><span class="Maybe">     359:</span> <span class="f">}</span>
<a name="360" /><span class="Maybe">     360:</span> 
<a name="361" /><span class="Maybe">     361:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZXNfZm9sZF8w"><span class="b">nodes_fold</span></a><span class="f">(</span><span class="b">dst</span><span class="f">,</span> <span class="b">orig</span><span class="f">,</span> <span class="b">sz</span><span class="f">)</span> \
<a name="362" /><span class="Maybe">     362:</span>         <span class="b">__nodes_fold</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">dst</span><span class="f">)</span><span class="f">,</span> <span class="f">&amp;</span><span class="f">(</span><span class="b">orig</span><span class="f">)</span><span class="f">,</span> <span class="b">sz</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="363" /><span class="Maybe">     363:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">__nodes_fold</span><span class="f">(</span><span class="b">nodemask_t</span> <span class="f">*</span><span class="b">dstp</span><span class="f">,</span> <span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">origp</span><span class="f">,</span>
<a name="364" /><span class="Maybe">     364:</span>         <span class="m">int</span> <span class="b">sz</span><span class="f">,</span> <span class="m">int</span> <span class="b">nbits</span><span class="f">)</span>
<a name="365" /><span class="Maybe">     365:</span> <span class="f">{</span>
<a name="366" /><span class="Maybe">     366:</span>     <span class="b">bitmap_fold</span><span class="f">(</span><span class="b">dstp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">origp</span><span class="f">-&gt;</span><span class="b">bits</span><span class="f">,</span> <span class="b">sz</span><span class="f">,</span> <span class="b">nbits</span><span class="f">)</span><span class="f">;</span>
<a name="367" /><span class="Maybe">     367:</span> <span class="f">}</span>
<a name="368" /><span class="Maybe">     368:</span> 
<a name="369" /><span class="Maybe">     369:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a> <span class="f">&gt;</span> <span class="c">1</span>
<a name="370" /><span class="Maybe">     370:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9tYXNrXzA_"><span class="b">for_each_node_mask</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>            \
<a name="371" /><span class="Maybe">     371:</span>     <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_Zmlyc3Rfbm9kZV8w"><span class="b">first_node</span></a><span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">;</span>            \
<a name="372" /><span class="Maybe">     372:</span>         <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">&lt;</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">;</span>            \
<a name="373" /><span class="Maybe">     373:</span>         <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_bmV4dF9ub2RlXzA_"><span class="b">next_node</span></a><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span><span class="f">)</span>
<a name="374" /><span class="False">     374:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* MAX_NUMNODES == 1 */</span>
<a name="375" /><span class="False">     375:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9tYXNrXzA_"><span class="b">for_each_node_mask</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">mask</span><span class="f">)</span>            \
<a name="376" /><span class="False">     376:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">!</span><a href="cpu.c_macros_noref.html#_bm9kZXNfZW1wdHlfMA__"><span class="b">nodes_empty</span></a><span class="f">(</span><span class="b">mask</span><span class="f">)</span><span class="f">)</span>                \
<a name="377" /><span class="False">     377:</span>         <span class="m">for</span> <span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">&lt;</span> <span class="c">1</span><span class="f">;</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">++</span><span class="f">)</span>
<a name="378" /><span class="Maybe">     378:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* MAX_NUMNODES */</span>
<a name="379" /><span class="Maybe">     379:</span> 
<a name="380" /><span class="Maybe">     380:</span> <span class="k">/*</span>
<a name="381" /><span class="Maybe">     381:</span> <span class="k"> * Bitmasks that are kept for all the nodes.</span>
<a name="382" /><span class="Maybe">     382:</span> <span class="k"> */</span>
<a name="383" /><span class="Maybe">     383:</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="f">{</span>
<a name="384" /><span class="Maybe">     384:</span>     <span class="b">N_POSSIBLE</span><span class="f">,</span>        <span class="k">/* The node could become online at some point */</span>
<a name="385" /><span class="Maybe">     385:</span>     <span class="b">N_ONLINE</span><span class="f">,</span>        <span class="k">/* The node is online */</span>
<a name="386" /><span class="Maybe">     386:</span>     <span class="b">N_NORMAL_MEMORY</span><span class="f">,</span>    <span class="k">/* The node has regular memory */</span>
<a name="387" /><span class="False">     387:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_HIGHMEM</span>
<a name="388" /><span class="False">     388:</span>     <span class="b">N_HIGH_MEMORY</span><span class="f">,</span>        <span class="k">/* The node has regular or high memory */</span>
<a name="389" /><span class="Maybe">     389:</span> <span class="f">#</span><span class="n">else</span>
<a name="390" /><span class="Maybe">     390:</span>     <span class="b">N_HIGH_MEMORY</span> <span class="f">=</span> <span class="b">N_NORMAL_MEMORY</span><span class="f">,</span>
<a name="391" /><span class="Maybe">     391:</span> <span class="f">#</span><span class="n">endif</span>
<a name="392" /><span class="False">     392:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_MOVABLE_NODE</span>
<a name="393" /><span class="False">     393:</span>     <span class="b">N_MEMORY</span><span class="f">,</span>        <span class="k">/* The node has memory(regular, high, movable) */</span>
<a name="394" /><span class="Maybe">     394:</span> <span class="f">#</span><span class="n">else</span>
<a name="395" /><span class="Maybe">     395:</span>     <span class="b">N_MEMORY</span> <span class="f">=</span> <span class="b">N_HIGH_MEMORY</span><span class="f">,</span>
<a name="396" /><span class="Maybe">     396:</span> <span class="f">#</span><span class="n">endif</span>
<a name="397" /><span class="Maybe">     397:</span>     <span class="b">N_CPU</span><span class="f">,</span>        <span class="k">/* The node has one or more cpus */</span>
<a name="398" /><span class="Maybe">     398:</span>     <span class="b">NR_NODE_STATES</span>
<a name="399" /><span class="Maybe">     399:</span> <span class="f">}</span><span class="f">;</span>
<a name="400" /><span class="Maybe">     400:</span> 
<a name="401" /><span class="Maybe">     401:</span> <span class="k">/*</span>
<a name="402" /><span class="Maybe">     402:</span> <span class="k"> * The following particular system nodemasks and operations</span>
<a name="403" /><span class="Maybe">     403:</span> <span class="k"> * on them manage all possible and online nodes.</span>
<a name="404" /><span class="Maybe">     404:</span> <span class="k"> */</span>
<a name="405" /><span class="Maybe">     405:</span> 
<a name="406" /><span class="Maybe">     406:</span> <span class="m">extern</span> <span class="b">nodemask_t</span> <span class="b">node_states</span><span class="f">[</span><span class="b">NR_NODE_STATES</span><span class="f">]</span><span class="f">;</span>
<a name="407" /><span class="Maybe">     407:</span> 
<a name="408" /><span class="Maybe">     408:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a> <span class="f">&gt;</span> <span class="c">1</span>
<a name="409" /><span class="Maybe">     409:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">node_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="410" /><span class="Maybe">     410:</span> <span class="f">{</span>
<a name="411" /><span class="Maybe">     411:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_bm9kZV9pc3NldF8w"><span class="b">node_isset</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">node_states</span><span class="f">[</span><span class="b">state</span><span class="f">]</span><span class="f">)</span><span class="f">;</span>
<a name="412" /><span class="Maybe">     412:</span> <span class="f">}</span>
<a name="413" /><span class="Maybe">     413:</span> 
<a name="414" /><span class="Maybe">     414:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_set_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="415" /><span class="Maybe">     415:</span> <span class="f">{</span>
<a name="416" /><span class="Maybe">     416:</span>     <span class="b">__node_set</span><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">node_states</span><span class="f">[</span><span class="b">state</span><span class="f">]</span><span class="f">)</span><span class="f">;</span>
<a name="417" /><span class="Maybe">     417:</span> <span class="f">}</span>
<a name="418" /><span class="Maybe">     418:</span> 
<a name="419" /><span class="Maybe">     419:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_clear_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="420" /><span class="Maybe">     420:</span> <span class="f">{</span>
<a name="421" /><span class="Maybe">     421:</span>     <span class="b">__node_clear</span><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">node_states</span><span class="f">[</span><span class="b">state</span><span class="f">]</span><span class="f">)</span><span class="f">;</span>
<a name="422" /><span class="Maybe">     422:</span> <span class="f">}</span>
<a name="423" /><span class="Maybe">     423:</span> 
<a name="424" /><span class="Maybe">     424:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">num_node_state</span><span class="f">(</span><span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="425" /><span class="Maybe">     425:</span> <span class="f">{</span>
<a name="426" /><span class="Maybe">     426:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_bm9kZXNfd2VpZ2h0XzA_"><span class="b">nodes_weight</span></a><span class="f">(</span><span class="b">node_states</span><span class="f">[</span><span class="b">state</span><span class="f">]</span><span class="f">)</span><span class="f">;</span>
<a name="427" /><span class="Maybe">     427:</span> <span class="f">}</span>
<a name="428" /><span class="Maybe">     428:</span> 
<a name="429" /><span class="Maybe">     429:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9zdGF0ZV8w"><span class="b">for_each_node_state</span></a><span class="f">(</span><span class="b">__node</span><span class="f">,</span> <span class="b">__state</span><span class="f">)</span> \
<a name="430" /><span class="Maybe">     430:</span>     <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9tYXNrXzA_"><span class="b">for_each_node_mask</span></a><span class="f">(</span><span class="f">(</span><span class="b">__node</span><span class="f">)</span><span class="f">,</span> <span class="b">node_states</span><span class="f">[</span><span class="b">__state</span><span class="f">]</span><span class="f">)</span>
<a name="431" /><span class="Maybe">     431:</span> 
<a name="432" /><span class="Maybe">     432:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zmlyc3Rfb25saW5lX25vZGVfMA__"><span class="b">first_online_node</span></a>    <a href="cpu.c_macros_ref.html#_Zmlyc3Rfbm9kZV8w"><span class="b">first_node</span></a><span class="f">(</span><span class="b">node_states</span><span class="f">[</span><span class="b">N_ONLINE</span><span class="f">]</span><span class="f">)</span>
<a name="433" /><span class="Maybe">     433:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bmV4dF9vbmxpbmVfbm9kZV8w"><span class="b">next_online_node</span></a><span class="f">(</span><span class="b">nid</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_bmV4dF9ub2RlXzA_"><span class="b">next_node</span></a><span class="f">(</span><span class="f">(</span><span class="b">nid</span><span class="f">)</span><span class="f">,</span> <span class="b">node_states</span><span class="f">[</span><span class="b">N_ONLINE</span><span class="f">]</span><span class="f">)</span>
<a name="434" /><span class="Maybe">     434:</span> 
<a name="435" /><span class="Maybe">     435:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">nr_node_ids</span><span class="f">;</span>
<a name="436" /><span class="Maybe">     436:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">nr_online_nodes</span><span class="f">;</span>
<a name="437" /><span class="Maybe">     437:</span> 
<a name="438" /><span class="Maybe">     438:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_set_online</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="439" /><span class="Maybe">     439:</span> <span class="f">{</span>
<a name="440" /><span class="Maybe">     440:</span>     <span class="b">node_set_state</span><span class="f">(</span><span class="b">nid</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span><span class="f">;</span>
<a name="441" /><span class="Maybe">     441:</span>     <span class="b">nr_online_nodes</span> <span class="f">=</span> <span class="b">num_node_state</span><span class="f">(</span><span class="b">N_ONLINE</span><span class="f">)</span><span class="f">;</span>
<a name="442" /><span class="Maybe">     442:</span> <span class="f">}</span>
<a name="443" /><span class="Maybe">     443:</span> 
<a name="444" /><span class="Maybe">     444:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_set_offline</span><span class="f">(</span><span class="m">int</span> <span class="b">nid</span><span class="f">)</span>
<a name="445" /><span class="Maybe">     445:</span> <span class="f">{</span>
<a name="446" /><span class="Maybe">     446:</span>     <span class="b">node_clear_state</span><span class="f">(</span><span class="b">nid</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span><span class="f">;</span>
<a name="447" /><span class="Maybe">     447:</span>     <span class="b">nr_online_nodes</span> <span class="f">=</span> <span class="b">num_node_state</span><span class="f">(</span><span class="b">N_ONLINE</span><span class="f">)</span><span class="f">;</span>
<a name="448" /><span class="Maybe">     448:</span> <span class="f">}</span>
<a name="449" /><span class="Maybe">     449:</span> 
<a name="450" /><span class="False">     450:</span> <span class="f">#</span><span class="n">else</span>
<a name="451" /><span class="False">     451:</span> 
<a name="452" /><span class="False">     452:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">node_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="453" /><span class="False">     453:</span> <span class="f">{</span>
<a name="454" /><span class="False">     454:</span>     <span class="m">return</span> <span class="b">node</span> <span class="f">==</span> <span class="c">0</span><span class="f">;</span>
<a name="455" /><span class="False">     455:</span> <span class="f">}</span>
<a name="456" /><span class="False">     456:</span> 
<a name="457" /><span class="False">     457:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_set_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="458" /><span class="False">     458:</span> <span class="f">{</span>
<a name="459" /><span class="False">     459:</span> <span class="f">}</span>
<a name="460" /><span class="False">     460:</span> 
<a name="461" /><span class="False">     461:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">node_clear_state</span><span class="f">(</span><span class="m">int</span> <span class="b">node</span><span class="f">,</span> <span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="462" /><span class="False">     462:</span> <span class="f">{</span>
<a name="463" /><span class="False">     463:</span> <span class="f">}</span>
<a name="464" /><span class="False">     464:</span> 
<a name="465" /><span class="False">     465:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">num_node_state</span><span class="f">(</span><span class="m">enum</span> <span class="b">node_states</span> <span class="b">state</span><span class="f">)</span>
<a name="466" /><span class="False">     466:</span> <span class="f">{</span>
<a name="467" /><span class="False">     467:</span>     <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="468" /><span class="False">     468:</span> <span class="f">}</span>
<a name="469" /><span class="False">     469:</span> 
<a name="470" /><span class="False">     470:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9zdGF0ZV8w"><span class="b">for_each_node_state</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">__state</span><span class="f">)</span> \
<a name="471" /><span class="False">     471:</span>     <span class="m">for</span> <span class="f">(</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">=</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">==</span> <span class="c">0</span><span class="f">;</span> <span class="f">(</span><span class="b">node</span><span class="f">)</span> <span class="f">=</span> <span class="c">1</span><span class="f">)</span>
<a name="472" /><span class="False">     472:</span> 
<a name="473" /><span class="False">     473:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zmlyc3Rfb25saW5lX25vZGVfMA__"><span class="b">first_online_node</span></a>    <span class="c">0</span>
<a name="474" /><span class="False">     474:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bmV4dF9vbmxpbmVfbm9kZV8w"><span class="b">next_online_node</span></a><span class="f">(</span><span class="b">nid</span><span class="f">)</span>    <span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a><span class="f">)</span>
<a name="475" /><span class="False">     475:</span> <span class="f">#</span><span class="n">define</span> <span class="b">nr_node_ids</span>        <span class="c">1</span>
<a name="476" /><span class="False">     476:</span> <span class="f">#</span><span class="n">define</span> <span class="b">nr_online_nodes</span>        <span class="c">1</span>
<a name="477" /><span class="False">     477:</span> 
<a name="478" /><span class="False">     478:</span> <span class="f">#</span><span class="n">define</span> <span class="b">node_set_online</span><span class="f">(</span><span class="b">node</span><span class="f">)</span>       <span class="b">node_set_state</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span>
<a name="479" /><span class="False">     479:</span> <span class="f">#</span><span class="n">define</span> <span class="b">node_set_offline</span><span class="f">(</span><span class="b">node</span><span class="f">)</span>       <span class="b">node_clear_state</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span>
<a name="480" /><span class="False">     480:</span> 
<a name="481" /><span class="Maybe">     481:</span> <span class="f">#</span><span class="n">endif</span>
<a name="482" /><span class="Maybe">     482:</span> 
<a name="483" /><span class="Maybe">     483:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX05VTUFfMA__"><span class="b">CONFIG_NUMA</span></a><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_TUFYX05VTU5PREVTXzA_"><span class="b">MAX_NUMNODES</span></a> <span class="f">&gt;</span> <span class="c">1</span><span class="f">)</span>
<a name="484" /><span class="Maybe">     484:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">node_random</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">maskp</span><span class="f">)</span><span class="f">;</span>
<a name="485" /><span class="False">     485:</span> <span class="f">#</span><span class="n">else</span>
<a name="486" /><span class="False">     486:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">node_random</span><span class="f">(</span><span class="m">const</span> <span class="b">nodemask_t</span> <span class="f">*</span><span class="b">mask</span><span class="f">)</span>
<a name="487" /><span class="False">     487:</span> <span class="f">{</span>
<a name="488" /><span class="False">     488:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="489" /><span class="False">     489:</span> <span class="f">}</span>
<a name="490" /><span class="Maybe">     490:</span> <span class="f">#</span><span class="n">endif</span>
<a name="491" /><span class="Maybe">     491:</span> 
<a name="492" /><span class="Maybe">     492:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV9vbmxpbmVfbWFwXzA_"><span class="b">node_online_map</span></a>     <span class="b">node_states</span><span class="f">[</span><span class="b">N_ONLINE</span><span class="f">]</span>
<a name="493" /><span class="Maybe">     493:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV9wb3NzaWJsZV9tYXBfMA__"><span class="b">node_possible_map</span></a>     <span class="b">node_states</span><span class="f">[</span><span class="b">N_POSSIBLE</span><span class="f">]</span>
<a name="494" /><span class="Maybe">     494:</span> 
<a name="495" /><span class="Maybe">     495:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX29ubGluZV9ub2Rlc18w"><span class="b">num_online_nodes</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">num_node_state</span><span class="f">(</span><span class="b">N_ONLINE</span><span class="f">)</span>
<a name="496" /><span class="Maybe">     496:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bnVtX3Bvc3NpYmxlX25vZGVzXzA_"><span class="b">num_possible_nodes</span></a><span class="f">(</span><span class="f">)</span>    <span class="b">num_node_state</span><span class="f">(</span><span class="b">N_POSSIBLE</span><span class="f">)</span>
<a name="497" /><span class="Maybe">     497:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_bm9kZV9vbmxpbmVfMA__"><span class="b">node_online</span></a><span class="f">(</span><span class="b">node</span><span class="f">)</span>    <span class="b">node_state</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span>
<a name="498" /><span class="Maybe">     498:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_bm9kZV9wb3NzaWJsZV8w"><span class="b">node_possible</span></a><span class="f">(</span><span class="b">node</span><span class="f">)</span>    <span class="b">node_state</span><span class="f">(</span><span class="f">(</span><span class="b">node</span><span class="f">)</span><span class="f">,</span> <span class="b">N_POSSIBLE</span><span class="f">)</span>
<a name="499" /><span class="Maybe">     499:</span> 
<a name="500" /><span class="Maybe">     500:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Zm9yX2VhY2hfbm9kZV8w"><span class="b">for_each_node</span></a><span class="f">(</span><span class="b">node</span><span class="f">)</span>       <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9zdGF0ZV8w"><span class="b">for_each_node_state</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">N_POSSIBLE</span><span class="f">)</span>
<a name="501" /><span class="Maybe">     501:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfb25saW5lX25vZGVfMA__"><span class="b">for_each_online_node</span></a><span class="f">(</span><span class="b">node</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_Zm9yX2VhY2hfbm9kZV9zdGF0ZV8w"><span class="b">for_each_node_state</span></a><span class="f">(</span><span class="b">node</span><span class="f">,</span> <span class="b">N_ONLINE</span><span class="f">)</span>
<a name="502" /><span class="Maybe">     502:</span> 
<a name="503" /><span class="Maybe">     503:</span> <span class="k">/*</span>
<a name="504" /><span class="Maybe">     504:</span> <span class="k"> * For nodemask scrach area.</span>
<a name="505" /><span class="Maybe">     505:</span> <span class="k"> * NODEMASK_ALLOC(type, name) allocates an object with a specified type and</span>
<a name="506" /><span class="Maybe">     506:</span> <span class="k"> * name.</span>
<a name="507" /><span class="Maybe">     507:</span> <span class="k"> */</span>
<a name="508" /><span class="False">     508:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_Tk9ERVNfU0hJRlRfMA__"><span class="b">NODES_SHIFT</span></a> <span class="f">&gt;</span> <span class="c">8</span> <span class="k">/* nodemask_t &gt; 256 bytes */</span>
<a name="509" /><span class="False">     509:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfQUxMT0NfMA__"><span class="b">NODEMASK_ALLOC</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span> <span class="b">name</span><span class="f">,</span> <span class="b">gfp_flags</span><span class="f">)</span>    \
<a name="510" /><span class="False">     510:</span>             <span class="b">type</span> <span class="f">*</span><span class="b">name</span> <span class="f">=</span> <span class="b">kmalloc</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="f">*</span><span class="b">name</span><span class="f">)</span><span class="f">,</span> <span class="b">gfp_flags</span><span class="f">)</span>
<a name="511" /><span class="False">     511:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfRlJFRV8w"><span class="b">NODEMASK_FREE</span></a><span class="f">(</span><span class="b">m</span><span class="f">)</span>            <span class="b">kfree</span><span class="f">(</span><span class="b">m</span><span class="f">)</span>
<a name="512" /><span class="Maybe">     512:</span> <span class="f">#</span><span class="n">else</span>
<a name="513" /><span class="Maybe">     513:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfQUxMT0NfMA__"><span class="b">NODEMASK_ALLOC</span></a><span class="f">(</span><span class="b">type</span><span class="f">,</span> <span class="b">name</span><span class="f">,</span> <span class="b">gfp_flags</span><span class="f">)</span>    <span class="b">type</span> <span class="b">_</span><span class="f">##</span><span class="b">name</span><span class="f">,</span> <span class="f">*</span><span class="b">name</span> <span class="f">=</span> <span class="f">&amp;</span><span class="b">_</span><span class="f">##</span><span class="b">name</span>
<a name="514" /><span class="Maybe">     514:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfRlJFRV8w"><span class="b">NODEMASK_FREE</span></a><span class="f">(</span><span class="b">m</span><span class="f">)</span>            <span class="m">do</span> <span class="f">{</span><span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="515" /><span class="Maybe">     515:</span> <span class="f">#</span><span class="n">endif</span>
<a name="516" /><span class="Maybe">     516:</span> 
<a name="517" /><span class="Maybe">     517:</span> <span class="k">/* A example struture for using NODEMASK_ALLOC, used in mempolicy. */</span>
<a name="518" /><span class="Maybe">     518:</span> <span class="m">struct</span> <span class="b">nodemask_scratch</span> <span class="f">{</span>
<a name="519" /><span class="Maybe">     519:</span>     <span class="b">nodemask_t</span>    <span class="b">mask1</span><span class="f">;</span>
<a name="520" /><span class="Maybe">     520:</span>     <span class="b">nodemask_t</span>    <span class="b">mask2</span><span class="f">;</span>
<a name="521" /><span class="Maybe">     521:</span> <span class="f">}</span><span class="f">;</span>
<a name="522" /><span class="Maybe">     522:</span> 
<a name="523" /><span class="Maybe">     523:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfU0NSQVRDSF8w"><span class="b">NODEMASK_SCRATCH</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>                        \
<a name="524" /><span class="Maybe">     524:</span>             <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfQUxMT0NfMA__"><span class="b">NODEMASK_ALLOC</span></a><span class="f">(</span><span class="m">struct</span> <span class="b">nodemask_scratch</span><span class="f">,</span> <span class="b">x</span><span class="f">,</span>    \
<a name="525" /><span class="Maybe">     525:</span>                     <a href="cpu.c_macros_ref.html#_R0ZQX0tFUk5FTF8w"><span class="b">GFP_KERNEL</span></a> <span class="f">|</span> <a href="cpu.c_macros_ref.html#_X19HRlBfTk9SRVRSWV8w"><span class="b">__GFP_NORETRY</span></a><span class="f">)</span>
<a name="526" /><span class="Maybe">     526:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfU0NSQVRDSF9GUkVFXzA_"><span class="b">NODEMASK_SCRATCH_FREE</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>    <a href="cpu.c_macros_noref.html#_Tk9ERU1BU0tfRlJFRV8w"><span class="b">NODEMASK_FREE</span></a><span class="f">(</span><span class="b">x</span><span class="f">)</span>
<a name="527" /><span class="Maybe">     527:</span> 
<a name="528" /><span class="Maybe">     528:</span> 
<a name="529" /><span class="True">     529:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_NODEMASK_H */</span>
<a name="530" /><span class="True">     530:</span> </pre>
  </body>
</html>
